home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 May: Tool Chest / Developer CD Series May 1996 (Tool Chest) (Apple Computer) (1996).iso / Tool Chest / Development Tools & Languages / Macintosh Common Lisp Related / defappleevents / finder-events.Lisp < prev    next >
Encoding:
Text File  |  1994-09-12  |  4.4 KB  |  168 lines  |  [TEXT/CCL2]

  1. (require 'appleevent-toolkit)
  2. (use-package "DEFAPPLEEVENTS")
  3.  
  4. ;; handy place to find address of local Finder
  5. ;;
  6. (defvar finder-signature `(:aedesc ,#$typeApplSignature :|MACS|))
  7.  
  8. ;; define the form of appleevents in the finder suite
  9. ;; (Not all of these have been tested -RGP)
  10.  
  11. (defappleevent about #$kCoreEventClass :|abou| () ())
  12.  
  13. (defappleevent close-window :|FNDR| :|clos| ((direct-object #$keyDirectObject)) ())
  14.  
  15. (defappleevent drag-selection :|FNDR| :|drag|
  16.   ((direct-object #$keyDirectObject)
  17.    (miscellaneous :|fmsc|)
  18.    (selection :|fsel|))
  19.   ())
  20.  
  21. (defappleevent open-selection :|FNDR| :|sope| 
  22.   ((direct-object #$keyDirectObject)
  23.    (selection :|fsel|))
  24.   ())
  25.  
  26. (defappleevent duplicate-selection :|FNDR| :|sdup| 
  27.   ((direct-object #$keyDirectObject)
  28.    (selection :|fsel|))
  29.   ())
  30.  
  31. (defappleevent empty-trash :|FNDR| :|empt| () ())
  32.  
  33. (defappleevent get-info :|FNDR| :|sinf| 
  34.   ((direct-object #$keyDirectObject)
  35.    (selection :|fsel|))
  36.   ())
  37.  
  38. (defappleevent make-alias :|FNDR| :|sali| 
  39.   ((direct-object #$keyDirectObject)
  40.    (selection :|fsel|))
  41.   ())
  42.  
  43. (defappleevent move-selection :|FNDR| :|move|
  44.   ((direct-object #$keyDirectObject)
  45.    (miscellaneous :|fmsc|)
  46.    (selection :|fsel|))
  47.   ())
  48.  
  49. (defappleevent move-window :|FNDR| :|posn|
  50.   ((direct-object #$keyDirectObject)
  51.    (miscellaneous :|fmsc|))
  52.   ())
  53.  
  54. (defappleevent open-selection :|FNDR| :|sope| 
  55.   ((direct-object #$keyDirectObject)
  56.    (selection :|fsel|))
  57.   ())
  58.  
  59. (defappleevent page-setup :|FNDR| :|pgsu| 
  60.   ((direct-object #$keyDirectObject))
  61.   ())
  62.  
  63. (defappleevent print-selection :|FNDR| :|spri| 
  64.   ((direct-object #$keyDirectObject)
  65.    (selection :|fsel|))
  66.   ())
  67.  
  68. (defappleevent print-window :|FNDR| :|pwin| 
  69.   ((direct-object #$keyDirectObject))
  70.   ())
  71.  
  72. (defappleevent put-away :|FNDR| :|sput| 
  73.   ((direct-object #$keyDirectObject)
  74.    (selection :|fsel|))
  75.   ())
  76.  
  77. (defappleevent resize-window :|FNDR| :|grow| 
  78.   ((direct-object #$keyDirectObject)
  79.    (miscellaneous :|fmsc|))
  80.   ())
  81.  
  82. (defappleevent restart :|FNDR| #$kaerestart () ())
  83.  
  84. (defappleevent reveal :|FNDR| :|srev| 
  85.   ((direct-object #$keyDirectObject)
  86.    (selection :|fsel|))
  87.   ())
  88.  
  89. (defappleevent set-view :|FNDR| :|view| 
  90.   ((direct-object #$keyDirectObject)
  91.    (miscellaneous :|fmsc|))
  92.   ())
  93.  
  94. (defappleevent sharing :|FNDR| :|sprv| 
  95.   ((direct-object #$keyDirectObject)
  96.    (miscellaneous :|fmsc|))
  97.   ())
  98.  
  99. (defappleevent show-clipboard :|FNDR| :|shcl| () ())
  100.  
  101. (defappleevent shutdown :|FNDR| #$KAEShutDown () ())
  102.  
  103. (defappleevent resize-window :|FNDR| :|zoom| 
  104.   ((direct-object #$keyDirectObject)
  105.    (miscellaneous :|fmsc|))
  106.   ())
  107.  
  108. (defrecord finderwindow
  109.   (windowtype :long)
  110.   (aliastype :desctype)
  111.   (aliaslength :long)
  112.   (alias :aliasrecord))
  113.  
  114. (defconstant kAESharing 13)
  115. (defconstant kByCommentView 6)
  116. (defconstant kByDateView 3)
  117. (defconstant kByIconView 1)
  118. (defconstant kByKindView 5)
  119. (defconstant kAEInfo 11)
  120. (defconstant kByLabelView 7)
  121. (defconstant kAEMain 0)
  122. (defconstant kByNameView 2)
  123. (defconstant kBySizeView 4)
  124. (defconstant kBySmallIcon 0)
  125. (defconstant kByVersionView 8)
  126. (defconstant zoomIn 7)
  127. (defconstant zoomOut 8)
  128.  
  129. (defun pathname->finder-window (pathname
  130.                                 &key (windowtype kAEMain))
  131.   (let* ((alias (defappleevents::pathname->alias-handle pathname))
  132.          (finder-window (#_NewPtr (+ 12 (#_getHandleSize alias)))))
  133.     (unwind-protect
  134.       (progn
  135.         (rset finder-window :finderwindow.windowtype windowtype)
  136.         (rset finder-window :finderwindow.aliastype #$typeAlias)
  137.         (rset finder-window :finderwindow.aliaslength
  138.               (#_getHandleSize alias))
  139.         (with-dereferenced-handles ((alias-ptr alias))
  140.           (#_BlockMove
  141.            alias-ptr
  142.            (%int-to-ptr
  143.             (+ 12 (%ptr-to-int finder-window)))
  144.            (#_getHandleSize alias)))))
  145.     finder-window))
  146.  
  147. #|
  148. ;Examples:
  149. (with-aedescs (about)
  150.   (send-appleevent
  151.    (make-about about finder-signature)
  152.    (%null-ptr)))
  153.  
  154. (with-aedescs (openit)
  155.   (send-appleevent
  156.    (make-open-selection openit finder-signature
  157.                         :direct-object `(:aedesc ,#$typeAlias #P"Alcatraz:")
  158.                         :selection `(:aelist
  159.                                      (:aedesc ,#$typeAlias #P"Alcatraz:MCL:")))
  160.    (%null-ptr)))
  161.  
  162. (let ((fw (pathname->finder-window #p"Alcatraz:MCL:")))
  163.   (with-aedescs (closeit)
  164.     (send-appleevent
  165.      (make-close-window closeit finder-signature
  166.                         :direct-object `(:aedesc :|fwin| ,fw)) (%null-ptr))
  167.     (dispose-record fw)))
  168. |#